package cn.oms.oms.controller;

import cn.oms.oms.entity.Patient;
import cn.oms.oms.res.PatientRes;
import cn.oms.oms.service.IPatientService;
import cn.oms.oms.vo.PatientReqVo;
import cn.oms.oms.vo.PatientVo;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author AllenChen曾晨
 * @since 2022-04-29
 */
@RestController
@RequestMapping("/oms/patient")
@Slf4j
public class PatientController {

    @Autowired
    public IPatientService patientService;

    /**
     * 根据查询条件查询用户列表
     * @param patientVo
     * @return
    */
    @PostMapping("/selectPatientList")
    public PageInfo<Patient> selectPatientList(PatientVo patientVo){
        if(patientVo.getPageNum()==null||patientVo.getPageNum()==0){
            patientVo.setPageNum(1);
        }
        if(patientVo.getPageSize()==null||patientVo.getPageSize()==0){
            patientVo.setPageSize(10);
        }
        log.debug("接收到信息:{}",patientVo);
        PageInfo<Patient> pageInfo = patientService.selectPatientList(patientVo);
        return pageInfo;
    }

    /**
     * 根据查询条件查询用户详情
     * @param patientVo
     * @return
     */
    @PostMapping("/selectPatientDetail")
    public PatientRes selectPatientDetail(PatientVo patientVo){
        log.debug("接收到信息:{}",patientVo);
        PatientRes patientRes = patientService.selectPatientDetail(patientVo);
        return patientRes;
    }

    /**
     * 新增患者
     * @param patientReqVo
     * @return
    */
    @PostMapping("/addPatient")
    public String addPatient(@Validated PatientReqVo patientReqVo, BindingResult result){
        log.debug("接收到新增请求信息:{}",patientReqVo);
        if(result.hasErrors()){
            String msg=result.getFieldError().getDefaultMessage();
            return msg;
        }
        String res = patientService.addPatient(patientReqVo);
        return res;
    }

    /**
     * 修改患者
     * @param patientReqVo
     * @return
     */
    @PostMapping("/updatePatient")
    public String updatePatient(@Validated PatientReqVo patientReqVo, BindingResult result){
        log.debug("接收到修改请求信息:{}",patientReqVo);
        if(result.hasErrors()){
            String msg=result.getFieldError().getDefaultMessage();
            return msg;
        }
        String res = patientService.updatePatient(patientReqVo);
        return res;
    }

    /**
     * 删除患者
     * @param id
     * @return
     */
    @GetMapping("/deletePatient/{id}")
    public String deletePatient(@PathVariable Integer id){
        log.debug("接收到信息:{}",id);
        String res = patientService.deletePatient(id);
        return res;
    }

}
